Ordering App System Docs
This repository contains all documentation for the interconnecting projects in Azure that handle ordering and product information for use by the sales team.
The project connects with HubSpot via an api to fetch and edit data, and uses GitHub to store code, perform certain management functions, and to host this Documentation, but all the custom applications at the heart of it are hosted in Azure, under the terramaxinc tenant.
Summary
The front-end user can interact with fours things directly: this Documentation page, HubSpot, and two client Progressive Web App :
- The Ordering App, which the allows users to view and edit Deal data in HubSpot through an interface that is better adapted to TerraMax business needs, and automates emailing Work Orders to production as part of the entry process.
- The Product Manager App, which allows users to quickly look up Product information, and to build and email themselves customized Price Lists.
These apps are served by a network of backend services:
- The HubSpot Service, an Azure Functions App which acts as a middle man between the client apps and all other data and services.
- The PDF Service, a Container app that receives an html document and returns it as a PDF document.
- The SQL Products Database, a relational database of data about TerraMax products, so that all apps and services can refer to this single source of truth and will never have conflicting data.
- The App Images storage account, which stores images for use in the Price List.
GitHub is used to store the codebase and versioning progress, to store and host this Documentation page, to store the Container Image for the PDF Service, and to update the PWA applications through GitHub Actions.
Many of these connections rely on access tokens or client secrets, some of which expire and require Management.
The Ordering App, Product Manager App, and HubSpot Service also have App Registrations in Entra, Microsoft’s identity access management solution. These registrations are involved in managing permissions between apps and services, and are closely linked to the actual hosted applications themselves but are separate entities with separate ids.